sgdk
z80_ctrl.h File Reference

Z80 control. More...

Go to the source code of this file.

Defines

#define Z80_HALT_PORT   0xA11100
#define Z80_RESET_PORT   0xA11200
#define Z80_RAM_START   0xA00000
#define Z80_RAM_END   0xA01FFF
#define Z80_RAM   Z80_RAM_START
#define Z80_RAM_LEN   ((Z80_RAM_END - Z80_RAM_START) + 1)
#define Z80_YM2612   0xA04000
#define Z80_BANK_REGISTER   0xA06000
#define Z80_DRV_COMMAND   0xA00100
#define Z80_DRV_STATUS   0xA00102
#define Z80_DRV_PARAMS   0xA00104
#define Z80_DRV_COM_PLAY_SFT   0
#define Z80_DRV_COM_STOP_SFT   4
#define Z80_DRV_STAT_PLAYING_SFT   0
#define Z80_DRV_STAT_READY_SFT   7
#define Z80_DRV_COM_PLAY   (1 << Z80_DRV_COM_PLAY_SFT)
#define Z80_DRV_COM_STOP   (1 << Z80_DRV_COM_STOP_SFT)
#define Z80_DRV_STAT_PLAYING   (1 << Z80_DRV_STAT_PLAYING_SFT)
#define Z80_DRV_STAT_READY   (1 << Z80_DRV_STAT_READY_SFT)
#define Z80_DRV_CH0_SFT   0
#define Z80_DRV_CH1_SFT   1
#define Z80_DRV_CH2_SFT   2
#define Z80_DRV_CH3_SFT   3
#define Z80_DRV_CH0   (1 << Z80_DRV_CH0_SFT)
#define Z80_DRV_CH1   (1 << Z80_DRV_CH1_SFT)
#define Z80_DRV_CH2   (1 << Z80_DRV_CH2_SFT)
#define Z80_DRV_CH3   (1 << Z80_DRV_CH3_SFT)
#define Z80_DRIVER_NULL   0
#define Z80_DRIVER_PCM   1
#define Z80_DRIVER_2ADPCM   2
#define Z80_DRIVER_4PCM_ENV   4
#define Z80_DRIVER_MVS   5
#define Z80_DRIVER_TFM   6
#define Z80_DRIVER_VGM   7
#define Z80_DRIVER_XGM   8
#define Z80_DRIVER_CUSTOM   -1
#define Z80_DRIVER_DEFAULT   Z80_DRIVER_PCM

Functions

void Z80_init ()
 Initialize Z80 sub system.
u16 Z80_isBusTaken ()
 Return Z80 BUS taken state.
void Z80_requestBus (u16 wait)
 Request Z80 BUS.
void Z80_releaseBus ()
 Release Z80 BUS.
void Z80_startReset ()
 Start Z80 reset.
void Z80_endReset ()
 End Z80 reset.
void Z80_setBank (const u16 bank)
 Set Z80 memory bank.
u8 Z80_read (const u16 addr)
 Read Z80 memory (Z80_RAM).
void Z80_write (const u16 addr, const u8 value)
 Write to Z80 memory (Z80_RAM).
void Z80_clear (const u16 dest, const u16 size, const u16 resetz80)
 Clear Z80 memory.
void Z80_upload (const u16 dest, const u8 *data, const u16 size, const u16 resetz80)
 Upload data in Z80 memory.
void Z80_download (const u16 from, u8 *dest, const u16 size)
 Read data from Z80 memory.
u16 Z80_getLoadedDriver ()
 Return currently loaded Z80 driver.
void Z80_unloadDriver ()
 Unload Z80 driver (actually clear Z80 ram).
void Z80_loadDriver (const u16 driver, const u16 waitReady)
 Load a Z80 driver.
void Z80_loadCustomDriver (const u8 *drv, u16 size)
 Load a custom Z80 driver.
u16 Z80_isDriverReady ()
 Return driver ready state (only for non custom driver).

Detailed Description

Z80 control.

Author:
Stephane Dallongeville
Date:
08/2011

This unit provides Z80 access from the YM2612 :

  • enable / disable Z80
  • request / release Z80 BUS
  • upload / download data to / from Z80 memory
  • set Z80 external Bank
  • Z80 driver handling

Define Documentation

#define Z80_BANK_REGISTER   0xA06000

Z80 Bank register address.

#define Z80_DRIVER_2ADPCM   2

2 channels PCM sample player Z80 driver.
It can mix 2 samples (4 bit PCM) at a fixed 22 Khz rate.

#define Z80_DRIVER_4PCM_ENV   4

4 channels sample player Z80 driver with envelop control.
It can mix 4 samples (8 bit signed) at a fixed 16 Khz rate
and handle volume (16 levels) for each channel.

#define Z80_DRIVER_CUSTOM   -1

CUSTOM Z80 driver.

#define Z80_DRIVER_MVS   5

MVS tracker Z80 driver (updated to last version with PCM and PSG support).

#define Z80_DRIVER_NULL   0

NULL Z80 driver.

#define Z80_DRIVER_PCM   1

Variable rate sample player Z80 driver.
It can play a sample (8 bit signed) from 8 Khz up to 32 Khz rate.

#define Z80_DRIVER_TFM   6

TFM tracker Z80 driver.

#define Z80_DRIVER_VGM   7

VGM Z80 driver.
It supports 1 PCM channel at a fixed 8 Khz and allows to play SFX through the named PCM channel.
Written by Sigflup and kubilus1.

#define Z80_DRIVER_XGM   8

eXtended VGM music player driver.
This driver takes VGM (or XGM) file as input to play music.
It supports 4 PCM channels at a fixed 14 Khz and allows to play SFX through PCM with 16 level of priority.
The driver is designed to avoid DMA contention when possible (depending CPU load).

#define Z80_DRV_CH0   (1 << Z80_DRV_CH0_SFT)

Z80 default driver channel 0 id.

#define Z80_DRV_CH1   (1 << Z80_DRV_CH1_SFT)

Z80 default driver channel 1 id.

#define Z80_DRV_CH2   (1 << Z80_DRV_CH2_SFT)

Z80 default driver channel 2 id.

#define Z80_DRV_CH3   (1 << Z80_DRV_CH3_SFT)

Z80 default driver channel 3 id.

#define Z80_DRV_COM_PLAY   (1 << Z80_DRV_COM_PLAY_SFT)

Z80 default driver play command.

#define Z80_DRV_COM_STOP   (1 << Z80_DRV_COM_STOP_SFT)

Z80 default driver stop command.

#define Z80_DRV_COMMAND   0xA00100

Z80 default driver command address.

#define Z80_DRV_PARAMS   0xA00104

Z80 default driver parameters address.

#define Z80_DRV_STAT_PLAYING   (1 << Z80_DRV_STAT_PLAYING_SFT)

Z80 default driver play status.

#define Z80_DRV_STAT_READY   (1 << Z80_DRV_STAT_READY_SFT)

Z80 default driver ready status.

#define Z80_DRV_STATUS   0xA00102

Z80 default driver status address.

#define Z80_RAM   Z80_RAM_START

Z80 RAM address.

#define Z80_RAM_END   0xA01FFF

Z80 RAM end address.

#define Z80_RAM_LEN   ((Z80_RAM_END - Z80_RAM_START) + 1)

Z80 RAM length in byte.

#define Z80_RAM_START   0xA00000

Z80 RAM start address.

#define Z80_YM2612   0xA04000

Z80 YM2612 port address.


Function Documentation

void Z80_clear ( const u16  dest,
const u16  size,
const u16  resetz80 
)

Clear Z80 memory.

Parameters:
destDestination address (Z80 memory).
sizeSize in byte of region to clear.
resetz80Reset Z80 if set to TRUE.
void Z80_download ( const u16  from,
u8 *  dest,
const u16  size 
)

Read data from Z80 memory.

Parameters:
fromSource address (Z80 memory).
destDestination where to write data.
sizeSize in byte of data to read.
u16 Z80_getLoadedDriver ( )

Return currently loaded Z80 driver.

Possible returned values are:

void Z80_init ( )

Initialize Z80 sub system.

Request Z80 BUS and reset bank number.

void Z80_loadCustomDriver ( const u8 *  drv,
u16  size 
)

Load a custom Z80 driver.

Parameters:
drvPointer to the driver binary to load.
sizeSize (in bytes) of the driver binary.
void Z80_loadDriver ( const u16  driver,
const u16  waitReady 
)

Load a Z80 driver.

Parameters:
driverDriver to load, possible values are:
waitReadyWait for driver to be ready.
u8 Z80_read ( const u16  addr)

Read Z80 memory (Z80_RAM).

Parameters:
addrAddress to read (relative to start of Z80_RAM).

You need to request Z80 BUS to access Z80 memory.

See also:
Z80_requestBus(u16)
void Z80_requestBus ( u16  wait)

Request Z80 BUS.

Parameters:
waitWait for BUS request operation to complete.
void Z80_setBank ( const u16  bank)

Set Z80 memory bank.

Parameters:
bankBank number to set (0x000-0x1FF)
void Z80_upload ( const u16  dest,
const u8 *  data,
const u16  size,
const u16  resetz80 
)

Upload data in Z80 memory.

Parameters:
destDestination address (Z80 memory).
dataData to upload.
sizeSize in byte of data to upload.
resetz80Reset Z80 if set to TRUE.
void Z80_write ( const u16  addr,
const u8  value 
)

Write to Z80 memory (Z80_RAM).

Parameters:
addrAddress to write (relative to start of Z80_RAM).
valueValue to write.

You need to request Z80 BUS to access Z80 memory.

See also:
Z80_requestBus(u16)
 All Classes Files Functions Variables Typedefs Enumerations Defines